BOJ_10799_쇠막대기
쇠막대기를 자를 때 발견할 수 있는 특징은
- 레이저로 자르는 순간에 남아 있는 막대기 개수만큼 조각이 생긴다
- 막대기 괄호가 닫힐 때 조각 1개가 생긴다
이를 이용하여 stack으로 구현하였다
package BJO;
import java.util.Scanner;
import java.util.Stack;
public class BJO_10799_쇠막대기 {
public static void main(String[] args) {
// 자르면 자른 순간 stack에 남아 있는 친구들만큼 쇠막대기가 생김
// 쇠막대기가 닫힐 때 하나가 추가로 생긴다
Scanner scan = new Scanner(System.in);
String str = scan.next();
Stack<Character> stack = new Stack<>();
int cnt = 0;
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if (ch == '(') {
// 레이저다
if (i < str.length() - 1 && str.charAt(i + 1) == ')') {
cnt += stack.size();
i++;
}
// 레이저 아니면 막대 시작
else {
stack.push('(');
}
} else {
// 막대 끝
// 조각 개수를 1 늘려줘야 함
cnt++;
stack.pop();
}
}
System.out.println(cnt);
}
}